package data;

import java.util.List;
import java.sql.Connection;

import com.mysql.jdbc.ResultSet;

import data.ILineaPedidoDAO;
import data.IReceptorDAO;
import domain.Donador;
import domain.Pedido;

public class JDBCPedidoDAO implements IPedidoDAO{
	private Connection conn;
	private ILineaPedidoDAO lpdao;
	private IReceptorDAO rdao;
	
	public JDBCPedidoDAO() {
        conn = ConnectionManager.getInstance().checkOut();
        lpdao = new JDBCLineaPedidoDAO();
        rdao = new JDBCReceptorDAO();
    }
        
	 protected void finalize() {
	        ConnectionManager.getInstance().checkIn(conn);
	    }
	
	public void delete(String numPedido) {
		// TODO Auto-generated method stub
		
	}

	
	public void insertPedido(Pedido p) {
		// TODO Auto-generated method stub
		
	}

	
	public List<Pedido> selectAllPedidos() {
		PreparedStatement stmt = null;
        ResultSet result = null;
        List listaPedidos = new LinkedList();
        String sql = "SELECT * FROM Pedidos";

        try {
            stmt = conn.prepareStatement(sql);
            result = stmt.executeQuery();

            while (result.next()) {
                Pedido p = new Pedido();
                String orderOID = result.getString("OID");
                p.setPedidoID(result.getString("pedidoID"));
             	p.setFechaPedido(new Date(result.getLong("FechaPedido")));
              	p.setFechaEntrega(new Date(result.getLong("FechaEntrega")));
              	
              	//get receptor
              	Receptor recept=rdao.select(conn, result.getInt("receptorOID"));
              	p.setReceptor(recept); 
                
                //get Linea Pedidos
              	Pedido pedido=lpdao.select(conn, orderOID);
                p.setLineaPedido(pedido);
                
                p.setValidado(result.getBoolean("validado"));
                
               // p.setTurno(result.get...))            

                listaPedidos.add(p);
            }
        } catch (SQLException e) {
            System.out.println("Message: " + e.getMessage());
            System.out.println("SQLState: " + e.getSQLState());
            System.out.println("ErrorCode: " + e.getErrorCode());
        } finally {
            try {
                if (result != null) {
                    result.close();
                }

                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
            }
        }

        return listaPedidos;
    }
		

}
